<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "DTD/xhtml1-transitional.dtd">















 
 
 
 
 
 
 
  
  


<html>
  <head>
    <script type="text/javascript" language="JavaScript">
    ORIGINAL_PAGE_PATH = "/appengine/docs/java/overview.html";
    </script>
    
    
<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
<title>App Engine Java Overview - Google App Engine - Google Code</title>
<script type="text/javascript"><!--
(function(){function a(){this.t={};this.tick=function(c){this.t[c]=(new Date).getTime()};this.tick("start")}var b=new a;window.jstiming={Timer:a,load:b};if(window.external&&window.external.pageT)window.jstiming.pt=window.external.pageT;})();

var _tocPath_ = '/appengine/docs/_toc.ezt';
var codesite_token = null;
//--></script>
<link href="../../../css/codesite.pack.04102009.css" type="text/css" rel="stylesheet"></link>
<script src="../../../js/codesite_head.pack.04102009.js" type="text/javascript"></script>
<script type="text/javascript">CODESITE_CSITimer['load'].tick('bhs');</script>
<link rel="search" type="application/opensearchdescription+xml" title="Google Code" href="http://code.google.com/osd.xml" />

<!--[if IE]><link rel="stylesheet" type="text/css" href="../../../css/iehacks.css" /><![endif]-->

    <link href="../../../css/semantic_headers.css" rel="stylesheet" type="text/css" />
    <link href="../../css/local_extensions.css" rel="stylesheet" type="text/css" />
  </head>

  <body class="gc-documentation">

    
    
    
</a>

<div id="gb">
 <span>
  
    <a id="lang-dropdown" class="dropdown" href="http://code.google.com" onclick="return false;"><img class="globeicon" src="../../../images/globe2_small.png"/><span>English</span></a>
  
 </span>
</div>

<div class="gbh" style="left: 0pt;"></div>
<div class="gbh" style="right: 0pt;"></div>


<style type="text/css">
  #gc-topnav h1 {
    padding: 0 0 0 6px;
  }
</style>


<div id="gc-container">
<a name="top"></a>
<div id="skipto">
  <a href="#gc-pagecontent">Skip to page content</a>
  <a href="#gc-toc">Skip to main navigation</a>
</div>

<div id="gc-header">
  <div id="logo"><a href="http://code.google.com">
  
  
     <img src="../../../images/cleardot.gif" height="1px" width="1px" alt="Google Code Home Page" id="gc-logo-img"/>
  
  
  </a></div>
  <div id="search">
    <div id="searchForm" class="searchForm">
      <form id="cse" action="http://www.google.com/cse" accept-charset="utf-8" class="gsc-search-box" onsubmit="executeGSearch(document.getElementById('gsearchInput').value); return false;">
      <noscript>
      <input type="hidden" name="cref" value="http://code.google.com/cse/googlecode-context.xml"/>
      </noscript>
        <table class="gsc-search-box" cellpadding="0" cellspacing="0">
          <tbody>
            <tr>
              <td class="gsc-input">
                <input id="gsearchInput" type="text" name="q" maxlength="2048" class="gsc-input" autocomplete="off" title="Google Code Search" style="width:345px"/>
              </td>
              <td class="gsc-search-button">
                <div id="cs-searchresults" onclick="event.cancelBubble = true;"></div>
                <input title="Search" id="gsearchButton" class="gsc-search-button" name="sa" value="Search" type="submit"/>
              </td>
            </tr>
            <tr>
              <td colspan="2" class="greytext">e.g. "templates" or "datastore"</td>
            </tr>
          </tbody>
        </table>
      </form>
    </div> <!-- end searchForm -->
  </div> <!-- end search -->
</div> <!-- end gc-header -->


<div id="codesiteContent">

<a name="gc-topnav-anchor"></a>
<div id="gc-topnav">
  <h1>Google App Engine</h1>
  <ul id="docs" class="gc-topnav-tabs">

    <li id="home_link">
      <a href="../../index.html" title="Google App Engine home page">Home</a>
    </li>
  
    <li id="docs_link">
      <a href="../index.html" class="selected" title="Official Google App Engine documentation">Docs</a>
    </li>
  
    <li id="faq_link">
      <a href="../../kb/index.html" title="Answers to frequently asked questions about Google App Engine">FAQ</a>
    </li>
  
    <li id="articles_link">
      <a href="../../articles/index.html" title="Focused articles and tutorials for Google App Engine developers">Articles</a>
    </li>
  
    <li>
      <a href="http://googleappengine.blogspot.com/" title="Official Google App Engine blog">Blog</a>
    </li>
  
    <li>
      <a href="../../community.html" title="Community home for Google App Engine">Community</a>
    </li>
  
    <li>
      <a href="../../terms.html" title="Google App Engine terms of service">Terms</a>
    </li>
  
    <li>
      <a href="../../downloads.html" title="Download Google App Engine">Download</a>
    </li>
  

  </ul>
</div> <!-- end gc-topnav -->

    <div class="g-section g-tpl-170">

      <div class="g-unit g-first" id="gc-toc">
        <ul>
  <li><a href="../../downloads.html">Downloads</a></li>
  <li><a href="http://code.google.com/status/appengine">System Status</a></li>
  <li><a href="http://code.google.com/p/googleappengine/issues/list">Issue Tracker</a></li>
</ul>
<div class="line"></div>
<ul>
  <li><h2>Getting Started</h2>
    <ul>
      <li><a href="../whatisgoogleappengine.html">What Is Google App Engine?</a></li>
      <li><a href="gettingstarted/index.html">Java</a>
        <ul>
              <li><a href="gettingstarted/introduction.html">Introduction</a></li>
    <li><a href="gettingstarted/installing.html">Installing the Java SDK</a></li>
    <li><a href="gettingstarted/creating.html">Creating a Project</a></li>
    <li><a href="gettingstarted/usingusers.html">Using the Users Service</a></li>
    <li><a href="gettingstarted/usingjsps.html">Using JSPs</a></li>
    <li><a href="gettingstarted/usingdatastore.html">Using the Datastore with JDO</a></li>
    <li><a href="gettingstarted/staticfiles.html">Using Static Files</a></li>
    <li><a href="gettingstarted/uploading.html">Uploading Your Application</a></li>

        </ul>
      </li>
      <li><a href="../python/gettingstarted/index.html">Python</a>
        <ul>
            <li><a href="../python/gettingstarted/introduction.html">Introduction</a></li>
  <li><a href="../python/gettingstarted/devenvironment.html">The Development Environment</a></li>
  <li><a href="../python/gettingstarted/helloworld.html">Hello, World!</a></li>
  <li><a href="../python/gettingstarted/usingwebapp.html">Using the webapp Framework</a></li>
  <li><a href="../python/gettingstarted/usingusers.html">Using the Users Service</a></li>
  <li><a href="../python/gettingstarted/handlingforms.html">Handling Forms With webapp</a></li>
  <li><a href="../python/gettingstarted/usingdatastore.html">Using the Datastore</a></li>
  <li><a href="../python/gettingstarted/templates.html">Using Templates</a></li>
  <li><a href="../python/gettingstarted/staticfiles.html">Using Static Files</a></li>
  <li><a href="../python/gettingstarted/uploading.html">Uploading Your Application</a></li>

        </ul>
      </li>
    </ul>
  </li>
</ul>
<div class="line"></div>
<ul>
  <li><h2>Java <sup class="new">Early Look</sup></h2>
    <ul>
          <li><a href="overview.html">Overview</a></li>
    <li><a href="runtime.html">Servlet Environment</a></li>
    <li><a href="datastore/index.html">Storing Data</a>
      <ul>
            <li><a href="datastore/overview.html">Overview</a></li>
    <li><a href="datastore/usingjdo.html">Using JDO</a></li>
    <li><a href="datastore/dataclasses.html">Defining Data Classes</a></li>
    <li><a href="datastore/creatinggettinganddeletingdata.html">Creating, Getting and Deleting Data</a></li>
    <li><a href="datastore/queriesandindexes.html">Queries and Indexes</a></li>
    <li><a href="datastore/transactions.html">Transactions</a></li>
    <li><a href="datastore/relationships.html">Relationships</a></li>
    <li><a href="datastore/usingjpa.html">Using JPA</a></li>
    <li><a href="javadoc/com/google/appengine/api/datastore/package-summary.html">Low-level API</a></li>

      </ul>
    </li>
    <li><a href="apis.html">Services</a>
      <ul>
        <li><a href="memcache/index.html">Memcache</a>
          <ul>
                <li><a href="memcache/overview.html">Overview</a></li>
    <li><a href="memcache/usingjcache.html">Using JCache</a></li>
    <li><a href="javadoc/com/google/appengine/api/memcache/package-summary.html">Low-level API</a></li>

          </ul>
        </li>
        <li><a href="urlfetch/index.html">URL Fetch</a>
          <ul>
                <li><a href="urlfetch/overview.html">Overview</a></li>
    <li><a href="urlfetch/usingjavanet.html">Using java.net</a></li>
    <li><a href="javadoc/com/google/appengine/api/urlfetch/package-summary.html">Low-level API</a></li>

          </ul>
        </li>
        <li><a href="mail/index.html">Mail</a>
          <ul>
                <li><a href="mail/overview.html">Overview</a></li>
    <li><a href="mail/usingjavamail.html">Using JavaMail</a></li>
    <li><a href="javadoc/com/google/appengine/api/mail/package-summary.html">Low-level API</a></li>

          </ul>
        </li>
        <li><a href="images/index.html">Images</a>
          <ul>
                <li><a href="images/overview.html">Overview</a></li>
    <li><a href="javadoc/com/google/appengine/api/images/package-summary.html">API Reference</a></li>

          </ul>
        </li>
        <li><a href="users/index.html">Google Accounts</a>
          <ul>
                <li><a href="users/overview.html">Overview</a></li>
    <li><a href="javadoc/com/google/appengine/api/users/package-summary.html">API Reference</a></li>

          </ul>
        </li>
      </ul>
    </li>
    <li><a href="javadoc/index.html">Javadoc Reference</a></li>
    <li><a href="jrewhitelist.html">JRE Class White List</a></li>
    <li><a href="config/index.html">Configuration</a>
      <ul>
            <li><a href="config/webxml.html">Deployment Descriptor</a></li>
    <li><a href="config/appconfig.html">App Config</a></li>
    <li><a href="config/indexconfig.html">Index Config</a></li>
    <li><a href="config/cron.html">Scheduled Tasks</a></li>

      </ul>
    </li>
    <li><a href="tools/index.html">Tools</a>
      <ul>
            <li><a href="tools/devserver.html">Development Server</a></li>
    <li><a href="tools/uploadinganapp.html">Uploading and Managing</a></li>
    <li><a href="tools/eclipse.html">Google Plugin for Eclipse</a></li>
    <li><a href="tools/ant.html">Using Apache Ant</a></li>

      </ul>
    </li>
    <li><a href="howto/index.html">How-To</a>
      <ul>
              <li><a href="howto/unittesting.html">Unit Testing</a></li>

      </ul>
    </li>

    </ul>
  </li>
</ul>
<div class="line"></div>
<ul>
  <li><h2>Python</h2>
    <ul>
          <li><a href="../python/overview.html">Overview</a></li>
    <li><a href="../python/runtime.html">CGI Environment</a></li>
    <li><a href="../python/datastore/index.html">Storing Data</a>
      <ul>
             <li><a href="../python/datastore/overview.html">Overview</a></li>
     <li><a href="../python/datastore/entitiesandmodels.html">Entities and Models</a></li>
     <li><a href="../python/datastore/creatinggettinganddeletingdata.html">Creating, Getting and Deleting Data</a></li>
     <li><a href="../python/datastore/keysandentitygroups.html">Keys and Entity Groups</a></li>
     <li><a href="../python/datastore/queriesandindexes.html">Queries and Indexes</a></li>
     <li><a href="../python/datastore/transactions.html">Transactions</a></li>
     <li><a href="../python/datastore/typesandpropertyclasses.html">Types and Property Classes</a></li>
     <li><a href="../python/datastore/gqlreference.html">GQL Reference</a></li>

     <li><span class="tlw-title tlw-expanded">Reference</span>
       <ul>
         <li><a href="../python/datastore/modelclass.html">Model</a></li>
         <li><a href="../python/datastore/expandoclass.html">Expando</a></li>
         <li><a href="../python/datastore/polymodelclass.html">PolyModel</a></li>
         <li><a href="../python/datastore/propertyclass.html">Property</a></li>
         <li><a href="../python/datastore/queryclass.html">Query</a></li>
         <li><a href="../python/datastore/gqlqueryclass.html">GqlQuery</a></li>
         <li><a href="../python/datastore/keyclass.html">Key</a></li>
         <li><a href="../python/datastore/functions.html">Functions</a></li>
         <li><a href="../python/datastore/exceptions.html">Exceptions</a></li>
       </ul>
     </li>

      </ul>
    </li>
    <li><a href="../python/apis.html">Services</a>
      <ul>
        <li><a href="../python/memcache/index.html">Memcache</a>
          <ul>
                 <li><a href="../python/memcache/overview.html">Overview</a></li>
      <li><a href="../python/memcache/usingmemcache.html">Using Memcache</a></li>
     <li><span class="tlw-title tlw-expanded">Reference</span>
       <ul>
         <li><a href="../python/memcache/clientclass.html">Client</a></li>
         <li><a href="../python/memcache/functions.html">Functions</a></li>
       </ul>
     </li>

          </ul>
        </li>
        <li><a href="../python/urlfetch/index.html">URL Fetch</a>
          <ul>
                 <li><a href="../python/urlfetch/overview.html">Overview</a></li>
     <li><span class="tlw-title tlw-expanded">Reference</span>
       <ul>
         <li><a href="../python/urlfetch/fetchfunction.html">The fetch Function</a></li>
         <li><a href="../python/urlfetch/responseobjects.html">Response Objects</a></li>
         <li><a href="../python/urlfetch/exceptions.html">Exceptions</a></li>
       </ul>
     </li>

          </ul>
        </li>
        <li><a href="../python/mail/index.html">Mail</a>
          <ul>
                 <li><a href="../python/mail/overview.html">Overview</a></li>
     <li><a href="../python/mail/sendingmail.html">Sending Mail</a></li>
     <li><a href="../python/mail/attachments.html">Attachments</a></li>
     <li><span class="tlw-title tlw-expanded">Reference</span>
       <ul>
         <li><a href="../python/mail/emailmessageclass.html">EmailMessage</a></li>
         <li><a href="../python/mail/emailmessagefields.html">Message Fields</a></li>
         <li><a href="../python/mail/functions.html">Functions</a></li>
         <li><a href="../python/mail/exceptions.html">Exceptions</a></li>
       </ul>
     </li>

          </ul>
        </li>
        <li><a href="../python/images/index.html">Images</a>
          <ul>
                 <li><a href="../python/images/overview.html">Overview</a></li>
     <li><a href="../python/images/installingPIL.html">Installing PIL</a></li>
     <li><a href="../python/images/usingimages.html">Using the Images API</a></li>
     <li><span class="tlw-title tlw-expanded">Reference</span>
       <ul>
         <li><a href="../python/images/imageclass.html">Image</a></li>
         <li><a href="../python/images/functions.html">Functions</a></li>
         <li><a href="../python/images/exceptions.html">Exceptions</a></li>
       </ul>
     </li>

          </ul>
        </li>
        <li><a href="../python/users/index.html">Google Accounts</a>
          <ul>
                 <li><a href="../python/users/overview.html">Overview</a></li>
     <li><a href="../python/users/userobjects.html">User Objects</a></li>
     <li><a href="../python/users/loginurls.html">Login URLs</a></li>
     <li><a href="../python/users/adminusers.html">Admin Users</a></li>

     <li><span class="tlw-title tlw-expanded">Reference</span>
       <ul>
         <li><a href="../python/users/userclass.html">User</a></li>
         <li><a href="../python/users/functions.html">Functions</a></li>
         <li><a href="../python/users/exceptions.html">Exceptions</a></li>
       </ul>
     </li>

          </ul>
        </li>
      </ul>
    </li>
    <li><a href="../python/config/index.html">Configuration</a>
      <ul>
            <li><a href="../python/config/appconfig.html">App Config</a></li>
    <li><a href="../python/config/indexconfig.html">Index Config</a></li>
    <li><a href="../python/config/cron.html">Scheduled Tasks</a></li>

      </ul>
    </li>
    <li><a href="../python/tools/index.html">Tools</a>
      <ul>
            <li><a href="../python/tools/devserver.html">Development Server</a></li>
    <li><a href="../python/tools/uploadinganapp.html">Uploading and Managing</a></li>
    <li><a href="../python/tools/uploadingdata.html">Uploading Data</a></li>
    <li><a href="../python/tools/webapp/index.html">webapp Framework</a>
      <ul>
             <li><a href="../python/tools/webapp/overview.html">Overview</a></li>
     <li><a href="../python/tools/webapp/running.html">Running the Application</a></li>
     <li><a href="../python/tools/webapp/requesthandlers.html">Request Handlers</a></li>
     <li><a href="../python/tools/webapp/requestdata.html">Request Data</a></li>
     <li><a href="../python/tools/webapp/buildingtheresponse.html">Building the Response</a></li>
     <li><a href="../python/tools/webapp/redirects.html">Redirects, Headers and Status Codes</a></li>
     

     <li><span class="tlw-title tlw-expanded">Reference</span>
       <ul>
         <li><a href="../python/tools/webapp/requestclass.html">Request</a></li>
         <li><a href="../python/tools/webapp/responseclass.html">Response</a></li>
         <li><a href="../python/tools/webapp/requesthandlerclass.html">RequestHandler</a></li>
         <li><a href="../python/tools/webapp/wsgiapplicationclass.html">WSGIApplication</a></li>
         <li><a href="../python/tools/webapp/utilmodule.html">Utility Functions</a></li>
         
       </ul>
     </li>

      </ul>
    </li>
    <li><a href="../python/tools/libraries.html">Third-party Libraries</a></li>

      </ul>
    </li>
    <li><a href="../python/howto/index.html">How-To</a>
      <ul>
              <li><a href="../python/howto/usinggdataservices.html">Google Data Services</a></li>

      </ul>
    </li>

    </ul>
  </li>
</ul>
<div class="line"></div>
<ul>
  <li><h2>Managing Your App</h2>
    <ul>
      <li><a href="../theadminconsole.html">The Admin Console</a></li>
      <li><a href="../quotas.html">Quotas</a></li>
      <li><a href="../billing.html">Billing</a></li>
    </ul>
  </li>
</ul>
<div class="line"></div>
<ul>
  <li><h2>Resources</h2>
    <ul>
      <li><a href="../../kb/index.html">FAQ</a></li>
      <li><a href="../../articles/index.html">Articles</a></li>
      <li><a href="http://appengine-cookbook.appspot.com/">Cookbook</a></li>
      <li><a href="http://appgallery.appspot.com/">App Gallery</a></li>
      <li><a href="http://code.google.com/p/googleappengine/">SDK Code</a></li>
      <li><a href="http://code.google.com/p/google-app-engine-samples/">Sample Apps Code</a></li>
      <li><a href="../../community.html">Discussion Groups</a></li>
    </ul>
  </li>
</ul>
<div class="line"></div>
<ul>
  <li><a href="../roadmap.html">Product Roadmap</a></li>
  <li><a href="http://code.google.com/p/googleappengine/wiki/SdkReleaseNotes">Release Notes</a></li>
  <li><a href="../revision_history.html">Revision History</a></li>
</ul>

        <a class="hidden" href="#gc-topnav-anchor">More Google App Engine resource links</a>
      </div>

      <div class="g-unit" id="gc-pagecontent">
        <h1 class="page_title">App Engine Java Overview</h1>



<p>Welcome to Google App Engine for Java!  With App Engine, you can build web applications using standard Java technologies and run them on Google's scalable infrastructure.  The Java environment provides a Java 6 JVM, a Java Servlets interface, and support for standard interfaces to the App Engine scalable datastore and services, such as JDO, JPA, JavaMail, and JCache.  Standards support makes developing your application easy and familiar, and also makes porting your application to and from your own servlet environment straightforward.</p>

<p>The <a href="tools/eclipse.html">Google Plugin for Eclipse</a> adds new project wizards and debug configurations to your <a href="http://www.eclipse.org/">Eclipse</a> IDE for App Engine projects.  App Engine for Java makes it especially easy to develop and deploy world-class web applications using <a href="http://code.google.com/webtoolkit">Google Web Toolkit</a> (GWT).  The Eclipse plugin comes bundled with the App Engine and GWT SDKs.</p>

<p>If you haven't already, see <a href="gettingstarted/index.html">the Java Getting Started Guide</a> for an interactive introduction to developing web applications with Java technologies and Google App Engine.</p>


<h3>The Java Runtime Environment</h3>

<p>App Engine runs Java applications using the Java 6 virtual machine (JVM).  The App Engine SDK supports Java 5 and later, and the Java 6 JVM can use classes compiled with any version of the Java compiler up to Java 6.</p>

<p>App Engine uses <a href="http://java.sun.com/products/servlet/">the Java Servlet standard</a> for web applications.  You provide your app's servlet classes, JavaServer Pages (JSPs), static files and data files, along with the deployment descriptor (the <code>web.xml</code> file) and other configuration files, in a standard WAR directory structure.  App Engine serves requests by invoking servlets according to the deployment descriptor.</p>

<p>The JVM runs in a secured "sandbox" environment to isolate your application for service and security.  The sandbox ensures that apps can only perform actions that do not interfere with the performance and scalability of other apps.  For instance, an app cannot spawn threads, write data to the local file system or make arbitrary network connections.  An app also cannot use JNI or other native code.  The JVM can execute any Java bytecode that operates within the sandbox restrictions.</p>

<p>See <a href="runtime.html">Servlet Environment</a> for more information.</p>


<h3>The Datastore, the Services and the Standard Interfaces</h3>

<p>App Engine provides scalable services that apps can use to store persistent data, access resources over the network, and perform other tasks like manipulating image data.  Where possible, the Java interfaces to these services conform to established standard APIs to allow for porting apps to and from App Engine.  Each service also provides a complete low-level interface for implementing new interface adapters, or for direct access.</p>

<p>Apps can use the App Engine <a href="datastore/index.html">Datastore</a> for reliable, scalable persistent storage of data.  The datastore supports 2 standard Java interfaces: <a href="http://java.sun.com/jdo/index.jsp">Java Data Objects</a> (JDO) 2.3 and <a href="http://java.sun.com/developer/technicalArticles/J2EE/jpa/">Java Persistence API</a> (JPA) 1.0.  These interfaces are implemented using <a href="http://www.datanucleus.org/products/accessplatform/">DataNucleus Access Platform</a>, the open source implementation of these standards.</p>

<p>The App Engine <a href="memcache/index.html">Memcache</a> provides fast, transient distributed storage for caching the results of datastore queries and calculations.  The Java interface implements <a href="http://jcp.org/en/jsr/detail?id=107">JCache</a> (JSR 107).</p>

<p>Apps use the <a href="urlfetch/index.html">URL Fetch</a> service to access resources over the web, and to communicate with other hosts using the HTTP and HTTPS protocols.  Java apps can simply use <a href="http://java.sun.com/javase/6/docs/api/java/net/URLConnection.html">java.net.URLConnection</a> and related classes from the Java standard library to access this service.</p>

<p>An app can use the <a href="mail/index.html">Mail</a> service to send email messages on behalf of the application's administrators, or on behalf of the currently signed in user.  Java apps use the <a href="http://java.sun.com/products/javamail/">JavaMail</a> interface for sending email messages.</p>

<p>The <a href="images/index.html">Images</a> service lets applications transform and manipulate image data in several formats, including cropping, rotating, resizing, and photo color enhancement.  The service can handle CPU-intensive image processing tasks, leaving more resources available for the application server to handle web requests.  (You can also use any JVM-based image processing software on the application server, provided it operates within the sandbox restrictions.)</p>

<p>An application can use <a href="users/index.html">Google Accounts</a> for user authentication.  Google Accounts handles user account creation and sign-in, and a user that already has a Google account (such as a GMail account) can use that account with your app.  An app can detect when the current user is signed in, and can access the user's email address.  Java applications can use security constraints in the deployment descriptor to control access via Google Accounts, and can detect whether the user is signed in and get the email address using the <code>getUserPrincipal()</code> method on the servlet request object.  An app can use the low-level Google Accounts API to generate sign-in and sign-out URLs, and to get a user data object suitable for storage in the datastore.</p>

<h3>Scheduled Tasks</h3>
 
<p>An application can configure scheduled tasks that will call URLs of the application at specified intervals. For more on this, see <a href="config/cron.html">Cron Jobs</a>.

<h3>Java Tools</h3>

<p>The App Engine Java SDK includes tools for testing your application, uploading your application files, and downloading log data.  The SDK also includes a component for <a href="tools/ant.html">Apache Ant</a> to simplify tasks common to App Engine projects.  The <a href="tools/eclipse.html">Google Plugin for Eclipse</a> adds features to the Eclipse IDE for App Engine development, testing and deployment, and includes the complete App Engine SDK.  The Eclipse plugin also makes it easy to develop <a href="http://code.google.com/webtoolkit">Google Web Toolkit</a> applications and run them on App Engine.</p>

<p>The <a href="tools/devserver.html">development server</a> runs your application on your local computer for development and testing.  The server simulates the App Engine datastore, services and sandbox restrictions.  The development server can also generate configuration for datastore indexes based on the queries the app performs during testing.</p>

<p>A multipurpose tool called <a href="tools/uploadinganapp.html">AppCfg</a> handles all command-line interaction with your application running on App Engine.  AppCfg can upload your application to App Engine, or just update the datastore index configuration so you can build new indexes before updating the code.  It can also download the app's log data, so you can analyze your app's performance using your own tools.</p>



      </div><!-- end gc-pagecontent -->
   </div><!-- end gooey wrapper -->

    </div> <!-- end codesite content -->

<div id="gc-footer" dir="ltr">
  <div class="text">
    
      <div class="notice"><div id="notice" style="text-align: center; border: 1em 0em 1em 0em">
  Except as otherwise <a
  href="http://code.google.com/policies.html#restrictions">noted</a>,
  the content of this page is licensed under the <a rel="license"
  href="http://creativecommons.org/licenses/by/2.5/">Creative Commons
  Attribution 2.5 License</a>, and code samples are licensed under the
  <a rel="license" href="http://www.apache.org/licenses/LICENSE-2.0">Apache
  2.0 License</a>.
<!-- <rdf:RDF xmlns="http://web.resource.org/cc/" 
              xmlns:dc="http://purl.org/dc/elements/1.1/"
              xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
  <Work rdf:about="">
    <license rdf:resource="http://creativecommons.org/licenses/by/2.5/" />
  </Work>
  <License rdf:about="http://creativecommons.org/licenses/by/2.5/">
    <permits rdf:resource="http://web.resource.org/cc/Reproduction"/>
    <permits rdf:resource="http://web.resource.org/cc/Distribution"/>
    <requires rdf:resource="http://web.resource.org/cc/Notice"/>
    <requires rdf:resource="http://web.resource.org/cc/Attribution"/>
    <permits rdf:resource="http://web.resource.org/cc/DerivativeWorks"/>
  </License>
</rdf:RDF> -->
</div>
Java is a registered trademark of Sun Microsystems, Inc.</div>
    
    &copy;2009 Google -
    <a href="http://code.google.com">Code Home</a> -
    <a href="http://www.google.com/accounts/TOS">Terms of Service</a> -
    <a href="http://www.google.com/privacy.html">Privacy Policy</a> -
    <a href="http://code.google.com/more">Site Directory</a>
    <br /> <br />
    Google Code offered in:
    <a href="http://code.google.com/intl/en">English</a> -
    <a href="http://code.google.com/intl/es">Español</a> -
    <a href="http://code.google.com/intl/ja">日本語</a> -
    <a href="http://code.google.com/intl/ko">한국어</a> -
    <a href="http://code.google.com/intl/pt-BR">Português</a> -
    <a href="http://code.google.com/intl/ru">Pусский</a> -
    <a href="http://code.google.com/intl/zh-CN">中文(简体)</a> -
    <a href="http://code.google.com/intl/zh-TW">中文(繁體)</a>
  </div>
</div><!-- end gc-footer -->

</div><!-- end gc-containter -->

<script type="text/javascript">CODESITE_CSITimer['load'].tick('ats');</script>
<script src="../../../js/codesite_tail.pack.04102009.js" type="text/javascript"></script>






  </body>
</html>


